﻿#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
using namespace std;
int main()
{
    close(1);
    int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
    cout << "fd = " << fd << endl;
    close(fd);

    //int fd = open("test.txt", O_RDONLY);
    //if (fd == -1)
    //{
    //    perror("open");
    //    exit(1);
    //}
    //char buffer[1024];
    //size_t n = read(fd, buffer, sizeof(buffer));
    //if (n > 0)
    //{
    //    buffer[n] = 0;
    //    cout << buffer << endl;
    //}
    //close(fd);

    //umask(0);
    ////int fd = open("test.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666); // 使用 | 符号来进行多功能的使用，创造文件的权限为666（前面的0代表八进制） 
    //int fd = open("test.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
    //if (fd == -1)
    //{
    //    perror("open");
    //    exit(1);
    //}

    //const char* str = "file system\n";
    //// 使用参数O_TRUNC，每次写入时会先清空数据
    //write(fd, str, strlen(str));  // 注意: write每次往文件里面写入数据时都会从开头位置写入且不会清空文件数据，也就是说每次写入的时候会覆盖文件里面的信息
    //cout << "fd = " << fd << endl; // 输出3. 0:标准输入流  1:标准输出流  2:标准错误流 
    //close(fd);  //关闭一个已经打开的文件描述符并清理相关资源
    return 0;
}

//int main()
//{
//    close(1);
// //打开文件，成功后返回文件的文件描述符，失败返回-1
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    cout << "fd(log.txt) = " << fd << endl;
//
//    cout << "stdout: " << fileno(stdout) << endl;
//    close(fd);
//    return 0;
//}

//#include <stdio.h>
//#include <sys/types.h>
//#include <sys/stat.h>
//#include <fcntl.h>
//#include <unistd.h>
//#include <string.h>
//int main()
//{
//    int fd = open("myfile", O_RDONLY);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//
//    const char* msg = "hello bit!\n";
//    char buf[1024];
//    while (1)
//    {
//        ssize_t s = read(fd, buf, strlen(msg));//类比write
//        if (s > 0)
//        {
//            printf("%s", buf);
//        }
//        else 
//        {
//            break;
//        }
//    }
//
//    close(fd);
//    return 0;
//}